package vue.FenetrePartie;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

import modele.Batiment.Laboratoire;


public class InformationBatiment extends JPanel implements ActionListener {
	
	private static final long serialVersionUID = 1L;
	private Panneau p;
	private JButton boutonAmeliorer;
	private JButton boutonFormer;
	private JButton boutonAmeliorerU;	
	private JButton boutonAnnuler;
	private modele.Batiment.Batiment batiment;
	private JLabel titreInformation;
	private JLabel resumeInformation;
	

	/**
	 * 
	 * @param p, c'est le panneau principal qui contient les 4 panneaux de la partie.
	 * 
	 * Ce panneau est celui en bas à droite, il va nous permettre d'afficher les informations d'un batiment quand celui ci sera selectionné.
	 */
	public InformationBatiment(Panneau p)
	{
		this.p = p;
		this.setLayout (null);
		
		this.setBackground(Color.GRAY);
		this.setBorder(BorderFactory.createLineBorder(Color.BLACK));		
		this.creerMenuSelectionBatiment();
	}
	
	/** 
	 * Création de l'ensemble des composents que va contenir le panneau
	 */
	public void creerMenuSelectionBatiment()
	{
		this.batiment = null;
		this.removeAll();
		
		this.titreInformation = new JLabel("Information Batiment");
		this.resumeInformation = new JLabel("");
		this.titreInformation.setBounds(5, 5, 300, 15);
		this.resumeInformation.setBounds(5, 10, 200, 130);
		this.add(this.titreInformation);
		this.add(this.resumeInformation);

		ImageIcon image;
		
		image = new ImageIcon("images/finies/boutonFormer.png"); 
		this.boutonFormer = new JButton(image);  
	    this.boutonFormer.setFocusPainted(false);  
	    this.boutonFormer.setContentAreaFilled(false); 
	    this.boutonFormer.setBounds(80,25,82,82);
		this.add(this.boutonFormer);
		this.boutonFormer.addActionListener(this);
		
		image = new ImageIcon("images/finies/boutonAmeliorerU.png"); 
		this.boutonAmeliorerU = new JButton(image);  
	    this.boutonAmeliorerU.setFocusPainted(false);  
	    this.boutonAmeliorerU.setContentAreaFilled(false); 
	    this.boutonAmeliorerU.setBounds(80,25,82,82);
		this.add(this.boutonAmeliorerU);
		this.boutonAmeliorerU.addActionListener(this);
			
		
		image = new ImageIcon("images/finies/boutonAmeliorer.png"); 
		this.boutonAmeliorer = new JButton(image);  
        this.boutonAmeliorer.setFocusPainted(false);  
        this.boutonAmeliorer.setContentAreaFilled(false); 
        this.boutonAmeliorer.setBounds(180,25,82,82);
		this.add(this.boutonAmeliorer);
		
		
		image = new ImageIcon("images/finies/icone_supprimer.gif"); 
		this.boutonAnnuler = new JButton(image);  
		this.boutonAnnuler.setFocusPainted(false);  
		this.boutonAnnuler.setContentAreaFilled(false); 
		this.boutonAnnuler.setBounds(270,10,20,20);
		this.add(this.boutonAnnuler);	

		this.boutonAmeliorer.addActionListener(this);
		this.boutonAnnuler.addActionListener(this);

		this.boutonAmeliorer.setVisible(false);
		this.boutonAmeliorerU.setVisible(false);
		this.boutonAnnuler.setVisible(false);
		this.boutonFormer.setVisible(false);
		
		this.repaint();
	}
	
	/**
	 * 
	 * @param batiment, c'est le batiment selectionné
	 * 
	 * On va mettre à jour les information sur le panneau en fonction du type du batiment
	 */
	public void addMenuSelectionBatiment(modele.Batiment.Batiment batiment)
	{
		this.batiment = batiment;		
		this.titreInformation.setText("Information Batiment : "+this.batiment.getNom());
		this.resumeInformation.setText(" Level : "+ Integer.toString(this.batiment.getNiveau()));
		this.boutonAmeliorer.setVisible(true);
		this.boutonAnnuler.setVisible(true);
		this.resumeInformation.setVisible(true);
		if(this.batiment.getNom().equals("campMilitaire")) 		this.boutonFormer.setVisible(true);
		if(this.batiment.getNom().equals("laboratoire")) 		this.boutonAmeliorerU.setVisible(true);

	}

	/**
	 * On enlève l'ensemble des composents du menu quand un batiment n'est plus selectionné
	 */
	public void deleteMenu()
	{
		this.boutonAmeliorer.setVisible(false);
		this.boutonAmeliorerU.setVisible(false);
		this.boutonAnnuler.setVisible(false);
		this.boutonFormer.setVisible(false);
		this.resumeInformation.setVisible(false);		
		this.titreInformation.setText("Information Batiment");
		this.repaint();
	}
	
	
	public void paintComponent(Graphics g) 
	{
		super.paintComponent(g);		
	}

	@Override
	public void actionPerformed(ActionEvent e)
	{
		Object source = e.getSource();
		
		if(source == this.boutonAnnuler)
		{					
			deleteMenu();
		}
		else if(source == this.boutonAmeliorer)
		{
			this.batiment.augmenterNiveau();
			this.addMenuSelectionBatiment(this.batiment);
		}
		else if(source == this.boutonFormer)
		{
			this.p.getPanneauMagasin().addMenuUnite(this.batiment);
		}
		else if(source == this.boutonAmeliorerU)
		{
			this.p.getControleur().augmenterNiveauAmeliorationPuissanceAttaque((Laboratoire) this.batiment) ;
		}
		
	}

}
